Information technology is a pervasive and critically important aspect of modern society. Information or data security is one of the paramount issues that impacts the acceptability of an information system's operations. Keeping data secure necessitates protection from unauthorized viewing, modification or destruction of the information.
Approaches to the security of information include encrypting the data to prevent its reading by an unauthorized entity. Encryption based security methods endeavor to prohibit data from being comprehended if received or accessed without proper authorization. Encryption methods generally utilize a mathematical algorithm to transform the legible data (plaintext) into an encrypted form (ciphertext), that cannot be comprehended without the knowledge and use of a key to decrypt the encrypted data.
On Nov. 26, 2001, NIST announced the Advance Encryption Standard (AES) in FIPS Publication 197. The AES uses the Rijndael cipher proposed by Vincent Rijmen and Joan Daemen September, 1999. Rijndael is a 128-bit symmetric block cipher that accepts a variable-length key of 128, 192, or 256-bits. The Rijndael algorithm is a now a well-known technology in the field of encryption, and is explicated in depth at the publicly accessible NIST website. FIPS Publication 197 is incorporated fully herein by reference thereto.
In April, 2008, Intel promulgated a White Paper describing Intel's new set of Single Instruction Multiple Data (SIMD) instructions for data encryption and decryption in compliance with FIPS Publication 197. Of the six defined instructions, four are dedicated to encryption and decryption, while the remaining two instructions support the AES key expansion procedure. The Intel White Paper entitled “Advanced Encryption Standard (AES) Instructions Set” is hereby fully incorporated herein by reference thereto.
However, to implement these AES instructions in a processor, an architecture must be defined to process the instructions in as efficient a manner as possible. Prior architecture implementations require multiple cycles of throughput to execute each instruction, resulting in reduced performance since the prior implementations are not fully pipelined.